在 Ruby 中,方法呼叫並非靜態跳轉至記憶體位址;它是一種動態的 訊息傳遞事件。當您呼叫方法時,實際上是向一個 接收者傳送訊息。此訊息包含方法名稱、可選參數,以及可能的 區塊關聯。
1. 呼叫語法與模糊性
Ruby 具有高度彈性: Foo.Bar 和 Foo.Bar() 是完全等價的。然而, Foo::Bar 通常指常數,而 Foo::Bar() 則強制視為方法呼叫。括號經常被省略,以創造類似 DSL 的使用體驗,讓方法看起來像屬性一樣。
2. 運算子剖析
運算子其實是 可重新定義的方法。表達式 expr1 + expr2 是 (expr1).+(expr2)的簡寫形式。這適用於一元運算(-obj),二元運算(a < b),以及後綴運算子。
3. yield 機制
方法使用 yield 將控制流程推入相關區塊。透過使用 Kernel.block_given?,方法可以根據呼叫者的上下文動態決定如何處理邏輯。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>